home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / pas / swag / tsr.swg / 0028_TSR Screen Saver.pas < prev    next >
Pascal/Delphi Source File  |  1994-08-24  |  1KB  |  61 lines

  1. {This is a Screen saver, that passed X time blank screen if no pressed a Key}
  2.  
  3. { - TSR.PAS - }
  4.  
  5. {$M 6000,0,0}
  6. {$R-,S-,I-,D+,F+,V-,B-,N-,L+}
  7.  
  8. Uses Dos,Crt,Graph,Screen;
  9. { The code for SCREEN.PAS is in the SCREEN.SWG file }
  10. Const
  11.   KeyBdInt = $09;
  12.   TimerInt = $08;
  13.   ScreenOn:Boolean = True;
  14.   Seconds = 10;    {Time to activate}
  15.   Counter:Word = 0;
  16. Var
  17.   Regs:Registers;
  18.   OldKbdVec,OldTimerVec:Pointer;
  19.   S:ScreenStore;
  20. Procedure STI; Inline($FB);
  21. Procedure CLI; Inline($FA);
  22. Procedure CallOldInt(Sub:Pointer);
  23.   Begin
  24.     Inline($9C/$FF/$5E/$06);
  25.   End;
  26. Procedure KeyBoard(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word); Interrupt;
  27.     Begin
  28.       Counter:=0;
  29.       If Not(ScreenOn) Then
  30.         Begin
  31.           S.RestoreScreen;
  32.           ScreenOn:=True;
  33.         End;
  34.       CallOldInt(OldKbdVec);
  35.       STI;
  36.     End;
  37. Procedure Timer(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word); Interrupt;
  38.     Begin
  39.       If ScreenOn Then
  40.         Begin
  41.           Inc(Counter);
  42.           If Counter>(Trunc(18.2*Seconds)) Then
  43.             Begin
  44.               S.StoreScreen;
  45.               ClrScr;
  46.               ScreenOn:=False;
  47.             End;
  48.         End;
  49.       CallOldInt(OldTimerVec);
  50.       STI;
  51.     End;
  52. Begin
  53. S.Init(1,1,178,7);
  54. GetIntVec(KeyBdInt,OldKbdVec);
  55. SetIntVec(KeyBdInt,@KeyBoard);
  56. GetIntVec(TimerInt,OldTimerVec);
  57. SetIntVec(TimerInt,@Timer);
  58. Keep(0);
  59.  
  60. End.
  61.